import 'dart:async';
// In order to *not* need this ignore, consider extracting the "web" version
// of your plugin as a separate package, instead of inlining it in the same
// package as the core of your plugin.
// ignore: avoid_web_libraries_in_flutter
import 'dart:html' as html show window;
import 'package:flutter/services.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';

/// A web implementation of the Cryptox plugin.
class CryptoxWeb {
  static void registerWith(Registrar registrar) {
    final MethodChannel channel = MethodChannel(
      'com.jacky.util/crypto',
      const StandardMethodCodec(),
      registrar,
    );

    final pluginInstance = CryptoxWeb();
    channel.setMethodCallHandler(pluginInstance.handleMethodCall);
  }

  /// Handles method calls over the MethodChannel of this plugin.
  /// Note: Check the "federated" architecture for a new way of doing this:
  /// https://flutter.dev/go/federated-plugins
  Future<dynamic> handleMethodCall(MethodCall call) async {
    return call.method;
    // switch (call.method) {
    //   case 'md5String':
    //   case 'md5Byte':
    //   case 'md5File':
    //     return "md5";
    //   case 'macsha256':
    //     return "sha256";
    //   default:
    //     throw PlatformException(
    //       code: 'Unimplemented',
    //       details: 'cryptox for web doesn\'t implement \'${call.method}\'',
    //     );
    // }
  }

  /// Returns a [String] containing the version of the platform.
  Future<String> getPlatformVersion() {
    final version = html.window.navigator.userAgent;
    return Future.value(version);
  }
}
